package com.hz.eduService.service;

import com.hz.eduService.domain.UserCourse;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hz.eduService.domain.dto.UserSelectCourseDTO;

import java.util.List;

/**
 * @author li
 * @description 针对表【user_courses(学生选课表)】的数据库操作Service
 * @createDate 2023-09-23 17:14:14
 */
public interface UserCourseService extends IService<UserCourse> {

    /**
     * 添加选课
     *
     * @param userCourse
     * @return
     * @author zpf
     */
    Boolean addUserCourse(UserCourse userCourse);

    int selectCourse(Integer userId, Integer courseId);

    /**
     * 取消选课
     *
     * @param courseId
     * @param userId
     * @return
     * @author zpf
     */
    Integer cancelCourse(int courseId, int userId);

    /**
     * 查看已选课程
     *
     * @param userId
     * @return
     */
    List<UserCourse> searchSelectedCourses(int userId);

    /**
     * 查看选择课程的学生列表
     *
     * @return
     */
    List<UserCourse> viewSelectedStudents(Integer courseId);

    List<UserSelectCourseDTO> selectCourses(Integer studentId);

    /**
     * 打分
     *
     * @param studentUserId
     * @param id
     * @param userScore
     * @return
     */
    UserCourse checkScore(Integer id, Integer userScore, Integer studentUserId);

    /**
     * 申请补考
     *
     * @param id
     * @param userScore
     * @param passScore
     * @return
     */
    boolean applyReExam(Integer id, Integer userScore, Integer passScore);

    UserCourse myScore(Integer id);

    UserSelectCourseDTO selectedCourseInfo(Integer studentId, Integer courseId);

}
